#pragma once
#ifndef DATASOURCEDESCRIPTOR_H
#define DATASOURCEDESCRIPTOR_H

#include <string>
#include <memory>

class DataSource;
class DataSourceDescriptor : public std::enable_shared_from_this<DataSourceDescriptor> {
public:
    virtual ~DataSourceDescriptor() {}

    /**
     * Creates a new instance of the data source.
     *
     * @return A shared pointer to the created data source.
     */
    virtual std::shared_ptr<DataSource> createDataSource();

    /**
     * Returns the display name for this data source descriptor.
     *
     * @return The display name for this data source descriptor.
     */
    virtual std::string getDisplayName();
};

#endif // DATASOURCEDESCRIPTOR_H
